/*
 * @(#)KeyGenerator.java 1.0 2005-3-1
 * Copyright 2005 VandaGroup, Inc. All rights reserved.
 */
package com.vanda.db.pk;
import java.sql.Date;
import com.vanda.db.SQLAccessor;
import com.vanda.exception.VandaException;
/**
 * 类说明: <br>
 * 通用主键工具类 - 日期型主键生成器 <br>
 * 
 * @author 蒋勇 <br>
 * @version Version 1.00 <br>
 */
public class DateKeyGenerator {
    /**
     * 主键类
     */
    private DateKeyInfo keyinfo;

    /**
     * 私有构造函数，保证外界无法直接实例化
     */
    private DateKeyGenerator(SQLAccessor accessor, String keyName, Date date)
            throws VandaException {
        keyinfo = new DateKeyInfo(keyName, date);
    }

    /**
     * 方法说明: 静态工厂方法，提供自己的实例
     * 
     * @param keyName
     *            主键的名字
     * @param con
     *            连接对象
     * @param pool
     *            缓冲池大小－注意只能在类的初始化时调用一次有效
     * @return
     * @author 蒋勇 2005-3-1
     */
    public static synchronized DateKeyGenerator getInstance(
            SQLAccessor accessor, String keyName, Date date)
            throws VandaException {
        DateKeyGenerator keygen = new DateKeyGenerator(accessor, keyName, date);
        return keygen;
    }

    /**
     * 方法说明: 取值方法，提供下一个合适的键值
     * 
     * @param con
     * @return
     * @author 蒋勇 2005-3-1
     */
    public synchronized long getNextKey(SQLAccessor accessor, Date now)
            throws VandaException {
        return keyinfo.getNextKey(accessor, now);
    }
}